<?php #coding: utf-8 æ ø å

class Gruppe_styring extends CI_model {
/* FUNKTIONER:

	find_alle_titler()
	find_alle_typer()
	find_gruppe_type($id_type)
	find_titler_indenfor_gruppe($id_type)

*/
	

	function find_alle_titler(){
		$query = $this->db->query("
			SELECT gruppe_type_titel.navn, gruppe_type_titel.beskrivelse, gruppe_type_titel.id, gruppe_type_titel.id_type
			FROM gruppe_type, gruppe_type_titel
			WHERE gruppe_type.id = gruppe_type_titel.id_type
		");

		$array = array();

		foreach($query->result() as $r){
			$array[] = array(
				'id' => $r->id,
				'navn' => $r->navn,
				'beskrivelse' => $r->beskrivelse,
				'id_type' => $r->id_type
			);
		}
		return $array;
	}

	function find_alle_typer(){
		$query = $this->db->query("
			SELECT gruppe_type.id, gruppe_type.navn, gruppe_type.beskrivelse
			FROM gruppe_type
		");

		$array = array();

		foreach($query->result() as $r){
			$array[] = array(
				'id' => $r->id,
				'navn' => $r->navn,
				'beskrivelse' => $r->beskrivelse,
			);
		}
		return $array;
	}

	function find_gruppe_type($id_type){ 
		/*finder navnet på en bestemt gruppe-type når id´et er givet*/
		$query = $this->db->query("
			SELECT navn, beskrivelse, navn_pl
			FROM gruppe_type
			WHERE id = ".$id_type."
		");

		$row = $query->row();
		return array(
			'id' => $id_type,
			'navn' => $row->navn,
			'navn_pl' => $row->navn_pl,
			'beskrivelse' => $row->beskrivelse
		);
	}

	function find_titler_indenfor_gruppe($id_type){
		/* OBS: returnerer et array af TO arrayer: [0] er et array med alle id'er, titler samt prepositioner, og [1] er et array kun med id'er */

		if($id_type!=0){ 
			$query = $this->db->query("
				SELECT id, navn, beskrivelse, navn_pl, prep
				FROM gruppe_type_titel
				WHERE id_type = ".$id_type."
			");
			$array = array();
			$fuldt_array = array();
			$id_array = array();
			foreach($query->result() as $row){
				$fuldt_array[] = array(
					'id' => $row->id,
					'navn' => $row->navn,
					'beskrivelse' => $row->beskrivelse,
					'navn_pl' => $row->navn_pl,
					'prep' => $row->prep
				);
				$id_array[] = $row->id;
			}
			$array = array($fuldt_array, $id_array);			
		}else{
			$array = array(array(), array());
		}
		return $array;
	}

	function find_alle_grupper_af_type($type_id){
		$query = $this->db->query("
			SELECT gruppe.id, navn.navn
			FROM gruppe, navn
			WHERE gruppe.type = ".$type_id."
			AND gruppe.id = navn.id_element
			ORDER BY navn
		");

		foreach($query->result() as $r){
			$array[] = array(
				'id' => $r->id,
				'navn' => $r->navn,
			);
		}
		return $array;

	}

	function ny_gruppe_type($navn, $beskrivelse){
			
		$query = $this->db->query("
    		INSERT INTO gruppe_type (navn, beskrivelse)
			VALUES ('".$navn."','".$beskrivelse."')
			
		");

		$query2 = $this->db->query("
			SELECT id
			FROM gruppe_type
			ORDER BY id DESC
		");

		$row = $query2->row();
		return $row->id;
	}

	function ny_titel($id_type, $navn, $beskrivelse, $navn_pl, $prep){
		$data = array(
			'id_type' => $id_type,
			'navn' => $navn,
			'beskrivelse' => $beskrivelse,
			'navn_pl' => $navn_pl,
			'prep' => $prep
		);

		$this->db->insert('gruppe_type_titel', $data); 
	}

	function rediger_gruppe_type($id,$navn,$beskrivelse,$navn_pl){
		$data = array(
				'navn' => $navn,
				'beskrivelse' => $beskrivelse,
				'navn_pl' => $navn_pl
            );

		$this->db->where('id', $id);
		$this->db->update('gruppe_type', $data); 
	}

	function rediger_titel($id,$navn,$beskrivelse, $navn_pl, $prep){	
		$data = array(
               'navn' => $navn,
               'beskrivelse' => $beskrivelse,
				'navn_pl' => $navn_pl,
				'prep' => $prep
            );

		$this->db->where('id', $id);
		$this->db->update('gruppe_type_titel', $data); 
	}

	function slet_titel($id){	
		$this->db->delete('gruppe_type_titel', array('id' => $id));
		$this->db->delete('relation_titel', array('id_under_titel' => $id)); 
	}

	function find_personer_og_titler_indenfor_gruppe($id_gruppe){
		$query = $this->db->query("
			SELECT navn.navn as navn_person, navn.id_element, gruppe_type_titel.navn, gruppe_type_titel.id
			FROM navn, gruppe_type_titel, relation, relation_titel
			WHERE navn.id_element = relation.under_id
			AND relation.over_id = ".$id_gruppe."
			AND relation.under_id IN (
				SELECT id
				FROM individ
			)
			AND relation.id = relation_titel.id_relation
			AND relation_titel.id_under_titel = gruppe_type_titel.id
			ORDER BY navn_person ASC
		");

		$array = array();

		if($query->num_rows() > 0){
			foreach($query->result() as $row){
				$array[] = array(
					'id_person' => $row->id_element,
					'navn_person' => $row->navn_person,
					'id_titel' => $row->id,
					'navn_titel' => $row->navn
				);
			}
		}
		return $array;
	}

	function fjern_titel($id_person,$id_gruppe,$id_titel){

		$query = $this->db->query("
			SELECT id_under_titel
			FROM relation, relation_titel
			WHERE relation.over_id = ".$id_gruppe."
			AND relation.under_id = ".$id_person."
			AND relation_titel.id_relation = relation.id
			AND relation_titel.id_under_titel = ".$id_titel."

		");

		if($query->num_rows() > 0){ // hvis titlen er tildelt
			//find relationen:
			$query_2 = $this->db->query("
				SELECT id
				FROM relation
				WHERE relation.over_id = ".$id_gruppe."
				AND relation.under_id = ".$id_person."
			");

			$row = $query_2->row();
			$id_relation = $row->id;

			//fjern titel:
			$query_3 = $this->db->query("
				DELETE FROM relation_titel
				WHERE id_relation = ".$id_relation."
				AND id_under_titel = ".$id_titel."
			");
		}
	}

	function tildel_titel($id_person,$id_gruppe,$id_titel){

		//findes der allerede en direkte relation mellem gruppen og personen?
		$query2 = $this->db->query("
			SELECT * 
			FROM relation
			WHERE over_id = ".$id_gruppe."
			AND under_id = ".$id_person."
		");
		if($query2->num_rows() < 1){ //hvis den ikke findes, så oprettes den.
			$query3 = $this->db->query("
				INSERT INTO relation (over_id, under_id, type)
				VALUES (".$id_gruppe.", ".$id_person.", 'normal')				
			");
		}

		$query = $this->db->query("
			SELECT id_under_titel
			FROM relation, relation_titel
			WHERE relation.over_id = ".$id_gruppe."
			AND relation.under_id = ".$id_person."
			AND relation_titel.id_relation = relation.id
			AND relation_titel.id_under_titel = ".$id_titel."

		");

		if($query->num_rows() < 1){ // hvis at titlen ikke allerede er tildelt
			//find relationen:
			$query_2 = $this->db->query("
				SELECT id
				FROM relation
				WHERE relation.over_id = ".$id_gruppe."
				AND relation.under_id = ".$id_person."
			");

			$row = $query_2->row();
			$id_relation = $row->id;

			//opret titel:
			$data = array(
				'id_relation' => $id_relation,
				'id_over_titel' => 0,
				'id_under_titel' => $id_titel
			);

			$this->db->insert('relation_titel',$data);
		}
	}

	function vaelg_type($id_gruppe, $id_type){
		$query = $this->db->query("
			UPDATE gruppe
			SET type = ".$id_type."
			WHERE id = ".$id_gruppe."
		");
		
	}
}



?>
